﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Xml.Linq;
using System.Data.SqlClient;
using QA_System.QASysDataSetTableAdapters;
namespace QA_System
{
    public class AnswerClass
    {
        // static string connString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\QASys.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True";
        private static string addressEx = "Xin lỗi, chúng tôi không có thông tin về địa chỉ của {0:0}.";        
        private static string artistNull = "Xin lỗi, chúng tôi không có thông tin về họa sĩ {0:0}.";
        private static string ownerNull = "Xin lỗi, chúng tôi không có thông tin về chủ sở hữu {0:0}.";
        private static string ex1 = "Xin lỗi, chúng tôi không có thông tin về họa sĩ bạn đưa ra.";
        private static string ex2 = "Xin lỗi, chúng tôi không có thông tin về chủ sở hữu bạn đưa ra.";
        private static string ex3 = "Xin lỗi, chúng tôi không có thông tin về tên bức tranh bạn đưa ra.";
        private static string ex4 = "Xin lỗi, bức tranh này chưa được định giá.";
        private static string ex5 = "Xin lỗi, chúng tôi không có thông tin về hiện vật bạn đưa ra.";
        private static string ex6 = "Xin lỗi, chúng tôi không có thông tin về trường phái bạn đưa ra.";
        private static string ex7 = "Xin lỗi, chúng tôi không có thông tin về bộ sưu tập bạn đưa ra.";
        private static string ex8 = "Xin lỗi, chúng tôi không có thông tin về chất liệu bạn đưa ra.";
        private static string yes = "Đúng vậy.";
        private static string no = "Thông tin của bạn chưa chính xác.";

        private static string null1 = "Xin lỗi, hiện chưa có thông tin này.";
        private static string null2 = "Hiện chưa có tranh này.";
        private static string Answer_string = "";
        private static string sentence_string = "";
        private static Artistfield art;
        private static Paintingfield paint;
        private static Genrefield genre;
        private static InLocationfield inlocation;
        private static Ownerfield owner;

        public static string AnswerString(string EAT, string[] KeyWord, sentence_tagger sentence)
        {
            sentence_string = "";
            Answer_string = "";
            int total_word = sentence.totalword();
            for (int i = 0; i < total_word; i++) sentence_string += sentence[i].Word_text + " ";        

            specificEAT(ref EAT);
            switch (EAT)
            {
                #region Address
                // node=6  // dia chi cua tac gia
                case "Add1.1": 
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = string.Format(artistNull, KeyWord[0]);
                    else
                    {

                        if (art.Art_Address != "") Answer_string = art.Art_Address + ".";
                        else Answer_string = string.Format(addressEx, KeyWord[0]);
                    }
                    break;               

                //node=6 // dia chi cua chu so huu
                case "Add1.2":
                    owner = Owner.GetByOwnerName(KeyWord[0].ToUpper());
                    if (owner == null) Answer_string = string.Format(ownerNull, KeyWord[0]);
                    else
                    {
                        if (owner.Own_Address != "") Answer_string = owner.Own_Address + ".";
                        else Answer_string = string.Format(addressEx, KeyWord[0]);
                    }
                    break;
                #endregion
                #region Year
                case "year1":// node =13 // thoi gian sang tac tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        if (paint.Painting_Year == "") Answer_string = null1;
                        else Answer_string = paint.Painting_Year.ToString() + ".";
                    }
                    break;
                #endregion
                #region Ask
                case "Ask1.1": //node=19; noi dung- description cua tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        if (paint.Description == "") Answer_string = null1;
                        else Answer_string = paint.Description.ToString() + ".";
                    }
                    break;

                case "Ask1.2": //node=19; chat lieu cua tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        Answer_string = paint.Material.ToString() + ".";
                    }
                    break;

                case "Ask1.3": //node=19; truong phai cua tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int gen_id = paint.Gen_ID;
                        genre = Genre.GetByGenreId(gen_id);
                        Answer_string = genre.KIND.ToString();
                    }
                    break;

                case "Ask1.4": //node=19; quoc tich cua CSH or Hsi
                    owner = Owner.GetByOwnerName(KeyWord[0].ToUpper());
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if ((owner == null) && (art == null)) Answer_string = ex1 + "/ " + ex2;
                    else
                    {
                        if ((owner == null) && (art != null))
                        {
                            Answer_string = art.Art_Nationality + ".";
                        }
                        else
                        {
                            if ((owner != null) && (art == null))
                            {
                                Answer_string = owner.Own_Nationality + ".";
                            }
                            else
                            {
                                if ((owner != null) && (art != null))
                                {
                                    Answer_string = "Quốc tịch của chủ sở hữu " + KeyWord[0].ToString() + " là: " + owner.Own_Nationality + ".";
                                    Answer_string += " / Quốc tịch của họa sĩ " + KeyWord[0].ToString() + " là: " + art.Art_Nationality + ".";
                                }
                            }
                        }
                    }
                    break;

                case "Ask2": //node=22; vi tri cua tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int paint_id = paint.Paint_ID;
                        inlocation = InLocation.GetByPaintingId(paint_id);
                        if (inlocation == null) Answer_string = null2;
                        else Answer_string = inlocation.Location + ".";
                    }
                    break;

                case "Ask3.1":// node=24; kich thuoc cua tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        Answer_string = paint.Height.ToString() + "x" + paint.Width.ToString() + ".";
                    }
                    break;

                case "Ask3.2":// node =24; gia cua tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        if (paint.Price == -1) Answer_string = null1;
                        else Answer_string = paint.Price.ToString() + ".";
                    }
                    break;

                case "Ask4.1":// node 26 tac gia cua tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int art_id = paint.Art_ID;
                        art = Artist.GetByArtistId(art_id);
                        Answer_string = art.Art_Name + ".";
                    }
                    break;

                case "Ask4.2":// node 26 CSH cua tranh
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int own_id = paint.Own_ID;
                        owner = Owner.GetByOwnerId(own_id);
                        Answer_string = owner.Own_Name + ".";
                    }
                    break;
                case "Ask5":// node 252 quoc tich cua tac gia A
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        Answer_string = art.Art_Nationality;
                    }
                    break;
                case "Ask7.1":// node 320 nam sinh cua tac gia
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        Answer_string = art.Art_Birth.Year.ToString();
                    }
                    break;

                case "Ask7.2":// node 320 nam mat cua tac gia
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        if (art.Art_Death != null) Answer_string = art.Art_Death.Date.ToString() + ".";
                        else Answer_string = null1;
                    }
                    break;
                #endregion

                #region number
                case "number1":// node 53 ; o tai vi tri L co bao nhieu tranh cua tac gia A ?
                    art = Artist.GetByArtistName(KeyWord[1].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        try
                        {
                            int art_id = art.Art_ID;
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Art_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[0].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh của " + KeyWord[1].ToString() + " ở tại " + KeyWord[0];
                            else
                            {
                                Answer_string = "Có  " + dt.Rows.Count.ToString() + " tranh";
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "number2":// node 55 ; o tai vi tri L co bao nhieu tranh thuoc truong phai G ?
                    genre = Genre.GetByKind(KeyWord[1].ToUpper());
                    if (genre == null) Answer_string = ex6;
                    else
                    {
                        try
                        {
                            int gen_id = genre.Gen_ID;
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + gen_id + ")AND (I.Location LIKE N'%" + KeyWord[0].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh thuộc trường phái " + KeyWord[1].ToString() + " ở tại " + KeyWord[0] + ".";
                            else
                            {
                                Answer_string = "Có" + dt.Rows.Count.ToString() + " tranh.";
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "number1r":// node 53 ; o tai vi tri L co bao nhieu tranh cua tac gia A ?
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        try
                        {
                            int art_id = art.Art_ID;
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Art_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh của " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            else
                            {
                                Answer_string = "Có  " + dt.Rows.Count.ToString() + " tranh.";
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "number2r":// node 55 ; o tai vi tri L co bao nhieu tranh thuoc truong phai G ?
                    genre = Genre.GetByKind(KeyWord[1].ToUpper());
                    if (genre == null) Answer_string = ex6;
                    else
                    {
                        try
                        {
                            int gen_id = genre.Gen_ID;
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + gen_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh thuộc trường phái " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            else
                            {
                                Answer_string = "Có" + dt.Rows.Count.ToString() + " tranh. ";
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;
                #endregion
                #region listSame
                case "listsame1.1": // node 64; danh sach tranh cung truong phai voi tranh p tai L
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int gen_id = paint.Gen_ID;
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + gen_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh thuộc cùng trường phái với " + KeyWord[0].ToString() + " ở tại " + KeyWord[1];
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString();
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "listsame1.2": // node 64 danh sach tranh cung chu so huu vơi tranh P o L
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int own_id = paint.Own_ID;
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Own_Id =" + own_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh cùng chủ sở hữu với " + KeyWord[0].ToString() + " ở tại " + KeyWord[1];
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;


                case "listsame1.3"://node 64 danh sach tranh cung tac gia vơi tranh P tai L

                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int art_id = paint.Art_ID;
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Art_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh cùng tác giả với " + KeyWord[0].ToString() + " ở tại " + KeyWord[1];
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "listsame1.4"://node 64 danh sach tranh cung chất liệu với tranh P tai L

                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int gen_id = paint.Gen_ID;
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + gen_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh cùng trường phái với " + KeyWord[0].ToString() + " ở tại " + KeyWord[1];
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;
                case "listsame2.1":       // node 65 danh sach tranh cung trg phai voi tranh P
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int gen_id = paint.Gen_ID;
                        QASysDataSet.PAINTDataTable dt = Painting.GetAlldataByGenre(gen_id);
                        if (dt.Rows.Count == 1) Answer_string = "Không tìm thấy tranh nào cùng trường phái với tranh bạn đưa ra.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (dt.Rows[i]["Name"].ToString() != KeyWord[0].ToUpper())
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                    }
                    break;

                case "listsame2.2"://node 65 danh sach tranh cung chu so huu voi tranh P
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int own_id = paint.Own_ID;
                        QASysDataSet.PAINTDataTable dt = Painting.GetAllByOwnerId(own_id);
                        if (dt.Rows.Count == 1) Answer_string = "Không tìm thấy tranh nào cùng chủ sở hữu với tranh bạn đưa ra.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (dt.Rows[i]["Name"].ToString() != KeyWord[0].ToUpper())
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                    }
                    break;

                case "listsame2.3"://node 65 danh sach tranh cung tac gia voi tranh P
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int art_id = paint.Art_ID;
                        QASysDataSet.PAINTDataTable dt = Painting.GetAllByArtist(art_id);
                        if (dt.Rows.Count == 1) Answer_string = "Không tìm thấy tranh nào cùng tác giả với tranh bạn đưa ra.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (dt.Rows[i]["Name"].ToString() != KeyWord[0].ToUpper())
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                    }
                    break;
                case "listsame2.4"://node 65 danh sach tranh cung trường phái voi tranh P
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        string material = paint.Material;
                        QASysDataSet.PAINTDataTable dt = Painting.GetAllByMaterial(material);
                        if (dt.Rows.Count == 1) Answer_string = "Không tìm thấy tranh nào cùng chất liệu với tranh bạn đưa ra.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (dt.Rows[i]["Name"].ToString() != KeyWord[0].ToUpper())
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                    }
                    break;
                #endregion
                #region ListLW
                case "listLW1.1":// node 71 danh sach tranh co kich thươc lon hon KT o vi tri L
                    string[] kt = KeyWord[0].Split('x');
                    if (kt.Length != 2) Answer_string = "Kích thước đưa ra không hợp lệ.";
                    else
                    {
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Height >" + kt[0] + ")AND(P.Width >" + kt[1] + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh kích thước lớn hơn " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;


                case "listLW1.2":// node 71 danh sach tranh co kich thươc nho hon KT o vi tri L
                    string[] kt1 = KeyWord[0].Split('x');
                    if (kt1.Length != 2) Answer_string = "Kích thước đưa ra không hợp lệ.";
                    else
                    {
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Height <" + kt1[0] + ")AND(P.Width <" + kt1[1] + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh kích thước nhỏ hơn " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;

                        }

                    }
                    break;

                case "listLW1.3":// node 71 danh sach tranh co kich thươc bang KT o vi tri L
                    string[] kt3 = KeyWord[0].Split('x');
                    if (kt3.Length != 2) Answer_string = "Kích thước đưa ra không hợp lệ.";
                    else
                    {
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Height =" + kt3[0] + ")AND(P.Width =" + kt3[1] + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh kích thước bằng " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;

                        }

                    }
                    break;

                case "listLW2.1":// node 72 danh sach tranh co kich thươc lon hon KT 
                    string[] kt2 = KeyWord[0].Split('x');
                    if (kt2.Length != 2) Answer_string = "Kích thước đưa ra không hợp lệ.";
                    else
                    {
                        try
                        {
                            string querystring = "SELECT * FROM  PAINT  WHERE ((Height >" + kt2[0] + ")AND(Width >" + kt2[1] + "))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh kích thước lớn hơn " + KeyWord[0].ToString() + ".";
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;

                        }

                    }
                    break;

                case "listLW2.2":// node 72 danh sach tranh co kich thươc nho hon kich thuoc KT
                    string[] kt4 = KeyWord[0].Split('x');
                    if (kt4.Length != 2) Answer_string = "Kích thước đưa ra không hợp lệ.";
                    else
                    {
                        try
                        {
                            string querystring = "SELECT * FROM  PAINT  WHERE ((Height <" + kt4[0] + ")AND(Width <" + kt4[1] + "))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh kích thước nhỏ hơn " + KeyWord[0].ToString() + ".";
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "listLW2.3":// node 72 danh sach tranh co kich thươc bang KT
                    string[] kt5 = KeyWord[0].Split('x');
                    if (kt5.Length != 2) Answer_string = "Kích thước đưa ra không hợp lệ.";
                    else
                    {
                        try
                        {
                            string querystring = "SELECT * FROM  PAINT  WHERE ((Height =" + kt5[0] + ")AND(Width =" + kt5[1] + "))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh kích thước bằng " + KeyWord[0].ToString() + ".";
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;
                #endregion
                #region Listyear
                #endregion
                //case listyear 2,3,4,5,6 chua viet
                #region listPicture
                case "listpic": // tranh cua hoa si A
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        QASysDataSet.PAINTDataTable dt = Painting.GetAllByArtist(art.Art_ID);
                        if (dt.Rows.Count == 0) Answer_string = null1;
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string = dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string = dt.Rows[i]["Name"].ToString() + ".";
                            }

                        }
                    }
                    break;
                #endregion
                #region listArt
                case "listart1":// node 97 danh sach tranh cua tac gia a o vi tri L
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        int art_id = art.Art_ID;
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Art_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh của tác giả " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;


                case "listart2"://node 98 danh sach tranh cua tac gia A

                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        int art_id = art.Art_ID;
                        QASysDataSet.PAINTDataTable dt = Painting.GetAllByArtist(art_id);
                        if (dt.Rows.Count == 0) Answer_string = "Không tìm thấy tranh nào của tác giả bạn đưa ra.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {

                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";

                            }
                        }
                    }
                    break;
                #endregion
                #region listLocation
                case "listlocation":
                    try
                    {
                        string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((I.Location LIKE N'%" + KeyWord[0].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;

                    }
                    break;
                #endregion
                #region listGenre
                case "listgenre1":// node 106 danh sach tranh thuoc truong phai G o vi tri L
                    genre = Genre.GetByKind(KeyWord[0].ToLower());
                    if (genre == null) Answer_string = ex6;
                    else
                    {
                        int gen_id = genre.Gen_ID;
                        try
                        {
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + gen_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào.";
                            else
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;
                

                case "listgenre2"://node 107 danh sach tranh thuoc truong phai G
                    genre = Genre.GetByKind(KeyWord[0].ToLower());
                    if (genre == null) Answer_string = ex6;
                    else
                    {
                        int gen_id = genre.Gen_ID;
                        QASysDataSet.PAINTDataTable dt = Painting.GetAlldataByGenre(gen_id);
                        if (dt.Rows.Count == 0) Answer_string = "Không tìm thấy tranh nào cùng trường phái với tranh bạn đưa ra.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {

                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }

                    }
                    break;
                #endregion
                #region listMaterial
                case "listmaterial1":// node 113 danh sach tranh ve tren chat lieu M tai vi tri L
                    try
                    {
                      
                        string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Material LIKE N'%" + KeyWord[0].ToLower() + "%')AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;

                    }

                    break;

                case "listmaterial2": //node 114 danh sach tranh ve tren chat liêu M
                    try
                    {
                        QASysDataSet.PAINTDataTable dt = Painting.GetAllByMaterial(KeyWord[0].ToLower());
                        if (dt.Rows.Count == 0) Answer_string = "Không tìm thấy tranh nào.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {

                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";

                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;

                    }
                    break;

                #endregion
                #region listPrice
                case "listprice1.1":// node110 danh sach tranh co gia cao hon P tai L
                    try
                    {
                        string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Price >" + KeyWord[0] + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào. ";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;

                    }

                    break;

                case "listprice1.2":// node110 danh sach tranh co thap cao hon P tai L
                    try
                    {
                      
                        string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Price <" + KeyWord[0] + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào. ";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;

                    }

                    break;


                case "listprice1.3":// node110 danh sach tranh co bang P tai L
                    try
                    {
                        string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Price =" + KeyWord[0] + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                    break;


                case "listprice2":// node124 danh sach tranh co gia tu P1 đen P2 tai L
                    try
                    {
                        string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Price >" + KeyWord[0] + ")AND (P.Price <" + KeyWord[1] + ")AND(I.Location LIKE N'%" + KeyWord[2].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                    break;

                case "listprice3":// node125 danh sach tranh co gia tu P1 đen P2 
                    try
                    {
                        string querystring = "SELECT * FROM PAINT  WHERE ((Price >" + KeyWord[0] + ")AND (Price <" + KeyWord[1] + "))";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                    break;


                case "listprice4.1":// node125 danh sach tranh co gia lon hon P
                    try
                    {
                        string querystring = "SELECT * FROM PAINT  WHERE (Price >" + KeyWord[0] + ")";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                    break;

                case "listprice4.2":// node125 danh sach tranh co gia nho hon P
                    try
                    {
                        string querystring = "SELECT * FROM PAINT  WHERE (Price <" + KeyWord[0] + ")";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào.";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                    break;

                case "listprice4.3":// node125 danh sach tranh co gia bang P
                    try
                    {
                        string querystring = "SELECT * FROM PAINT  WHERE (Price =" + KeyWord[0] + ")";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = "Không có tranh nào. ";
                        else
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                    break;
                #endregion
                #region listInfo
                case "listMG-info-of-art":// node 342 : thong tin ve tranh P cua tac gia A/ danh sach tranh thuoc truong phai G- ve tren chat lieu M cua tac gia P
                    processListMGInfoOfArt(KeyWord);
                    break;

                case "listMG-info"://node 129  thong tin ve tranh P / danh sach tranh thuoc truong phai G- ve tren chat lieu M 
                    processListMGInfo(KeyWord);
                    break;
                #endregion
                #region listCollection&infoBaoTang
                case "listcollect": // node 133 thong tin ve bo suu tap C
                    try
                    {
                        string querystring = "SELECT * FROM Collection  WHERE  (Name LIKE N'%" + KeyWord[0].ToUpper() + "%'))";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count != 0)
                        {                           
                            Collectionfield collect = null;
                            collect.Art_ID = int.Parse(dt.Rows[0]["Art_Id"].ToString());
                            collect.List_Paint_Id = dt.Rows[0]["List_Paint_Id"].ToString();
                            collect.Name = dt.Rows[0]["Name"].ToString();
                            art = Artist.GetByArtistId(collect.Art_ID);
                            Answer_string = "Tên bộ sưu tập: " + collect.Name;
                            Answer_string += ". Tác giả: " + art.Art_Name;
                            Answer_string += ". Gồm các tranh: ";

                            string[] listpaint = collect.List_Paint_Id.Split(' ');

                            /*
                            int art_id = int.Parse(dt.Rows[0]["Art_Id"].ToString());
                            string List_Paint_Id = dt.Rows[0]["List_Paint_Id"].ToString();
                            string Name = dt.Rows[0]["Name"].ToString();
                            art = Artist.GetByPrimaryKey(art_id);
                            Answer_string = "Tên bộ sưu tập: " + Name;
                            Answer_string += ". Tác giả: " + art.Art_Name;
                            Answer_string += ". Gồm các tranh: ";
                            string[] listpaint = List_Paint_Id.Split(' ');
                            */
                            for (int i = 0; i < listpaint.Length; i++)
                            {
                                paint = Painting.GetByPaintingId(int.Parse(listpaint[i]));
                                if (i != (listpaint.Length - 1)) Answer_string += paint.Painting_Name + ", ";
                                else Answer_string += paint.Painting_Name + ".";
                            }
                        }
                        else
                        {
                            Answer_string = ex7;
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                    break;

                case "infobaotang":// node 137 thong tin ve bao tang
                    Answer_string = "Thông tin về bảo tàng.";
                    break;
                #endregion
                #region Info
                case "info1.1":// node 141 thong tin ve tac gia tranh P
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        art = Artist.GetByArtistId(paint.Art_ID);
                        Answer_string = "Thông tin về tác giả: ";
                        Answer_string += "tên: " + art.Art_Name.ToString();
                        Answer_string += ", năm sinh: " + art.Art_Birth.Date.ToString();
                        if (art.Art_Death != null) Answer_string += ", năm mất: " + art.Art_Death.Date.ToString();
                        Answer_string += ", giới tính: " + art.Artist_Gen.ToString();
                        Answer_string += ", quốc tịch: " + art.Art_Nationality.ToString();
                        if (art.Art_Address != "") Answer_string += ", địa chỉ: " + art.Art_Address.ToString();
                        if (art.Art_Email != "") Answer_string += ", email: " + art.Art_Email.ToString();
                        if (art.Description != "") Answer_string += ", thông tin thêm: " + art.Description.ToString();
                    }
                    break;

                case "info1.2":// node 141 thong tin ve chu so huu cua tranh P
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        owner = Owner.GetByOwnerId(paint.Own_ID);
                        Answer_string = "Thông tin về chủ sở hữu: ";
                        Answer_string += "tên: " + owner.Own_Name.ToString();
                        Answer_string += ", quốc tịch: " + owner.Own_Nationality.ToString();

                        if (owner.Own_Birth != null) Answer_string += ", năm sinh: " + owner.Own_Birth.Date.ToString();
                        Answer_string += ", giới tính: " + owner.Own_Gen.ToString();

                        if (owner.Own_Address != "") Answer_string += ", địa chỉ: " + owner.Own_Address.ToString();
                        if (owner.Own_Email != "") Answer_string += ", email: " + owner.Own_Email.ToString();
                        if (owner.Description != "") Answer_string += ", thông tin thêm: " + owner.Description.ToString();
                    }
                    break;


                case "info2"://node 141 thong tin ve truong phai G
                    genre = Genre.GetByKind(KeyWord[0].ToLower());
                    if (genre == null) Answer_string = ex6;
                    else
                    {
                        if (genre.Description != "") Answer_string += genre.Description.ToString();
                        else Answer_string = null1;
                    }
                    break;

                case "info3":// node 146 thong tin ve tranh P/ họa sĩ A/ chu so huu O
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art != null)
                    {
                        Answer_string = "Thông tin về tác giả: " ;
                        Answer_string += "tên: " + art.Art_Name.ToString() + "\r\n";
                        Answer_string += ", năm sinh: " + string.Format("{0:dd/MM/yyyy}",art.Art_Birth);
                        if (art.Art_Death != null) Answer_string += ", năm mất: " + string.Format("{0:dd/MM/yyyy}",art.Art_Death);
                        if (art.Artist_Gen) Answer_string += ", giới tính: nam";
                        else Answer_string += ", giới tính: nữ";
                        Answer_string += ", quốc tịch: " + art.Art_Nationality.ToString();
                        if (art.Art_Address != "") Answer_string += ", địa chỉ: " + art.Art_Address.ToString();
                        if (art.Art_Email != "") Answer_string += ", email: " + art.Art_Email.ToString();
                        if (art.Description != "") Answer_string += ", thông tin thêm: " + art.Description.ToString();
                    }
                    else
                    {
                        owner = Owner.GetByOwnerName(KeyWord[0].ToUpper());
                        if (owner != null)
                        {
                            Answer_string = "Thông tin về chủ sở hữu: ";
                            Answer_string += "tên: " + owner.Own_Name.ToString();
                            Answer_string += ", quốc tịch: " + owner.Own_Nationality.ToString();

                            if (owner.Own_Birth != null) Answer_string += ", năm sinh: " + string.Format("{0:dd/MM/yyyy}",owner.Own_Birth);
                            Answer_string += ", giới tính: " + owner.Own_Gen.ToString();

                            if (owner.Own_Address != "") Answer_string += ", địa chỉ: " + owner.Own_Address.ToString();
                            if (owner.Own_Email != "") Answer_string += ", email: " + owner.Own_Email.ToString();
                            if (owner.Description != "") Answer_string += ", thông tin thêm: " + owner.Description.ToString();
                        }
                        else
                        {
                            paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                            if (paint == null) Answer_string = null1;
                            else
                            {
                                art = Artist.GetByArtistId(paint.Art_ID);
                                owner = Owner.GetByOwnerId(paint.Own_ID);
                                genre = Genre.GetByGenreId(paint.Gen_ID);

                                Answer_string = "Thông tin về tranh: ";
                                Answer_string += "tên: " + paint.Painting_Name;
                                Answer_string += ", tác giả: " + art.Art_Name;
                                Answer_string += ", chủ sở hữu: " + owner.Own_Name;
                                Answer_string += ", trường phái: " + genre.KIND;
                                Answer_string += ", kích thước: " + paint.Height.ToString() + "x" + paint.Width.ToString();
                                Answer_string += ", chất liệu: " + paint.Material;
                                if (paint.Painting_Year != "") Answer_string += ", năm sáng tác: " + paint.Painting_Year;
                                if (paint.Price != -1) Answer_string += ", định giá: " + paint.Price.ToString();
                                if (paint.Description != "") Answer_string += ", thông tin thêm: " + paint.Description;
                            }
                        }
                    }
                    break;
                #endregion
                #region YesNo
                case "yn1":// node 34 ; o tai vi tri L co tranh cua tac gia A không?
                    art = Artist.GetByArtistName(KeyWord[1].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        try
                        {
                            int art_id = art.Art_ID;
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Art_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[0].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh của " + KeyWord[1].ToString() + " ở tại " + KeyWord[0] + ".";
                            else
                            {
                                Answer_string = "Có tranh của " + KeyWord[1].ToString() + " ở tại " + KeyWord[0] + ".";
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "yn2":// node 39 ; o tai vi tri L co tranh thuoc truong phai G không?
                    genre = Genre.GetByKind(KeyWord[1].ToUpper());
                    if (genre == null) Answer_string = ex6;
                    else
                    {
                        try
                        {
                            int gen_id = genre.Gen_ID;
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + gen_id + ")AND (I.Location LIKE N'%" + KeyWord[0].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh thuộc trường phái " + KeyWord[1].ToString() + " ở tại " + KeyWord[0].ToString() + ".";
                            else
                            {
                                Answer_string = "Có tranh thuộc trường phái " + KeyWord[1].ToString() + " ở tại " + KeyWord[0].ToString() + ".";
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "yn3":// node 46 ; o tai vi tri L co tranh thuoc bo suu tap C cua tac gia P không?
                    processYn3(KeyWord);
                    break;

                case "yn4":// node 48 ; o tai vi tri L co tranh thuoc bo suu tap C  không?
                    processYn4(KeyWord);
                    break;

                case "yn1r":// node 154 ; o tai vi tri L co tranh cua tac gia A không?
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        try
                        {                          
                            int art_id = art.Art_ID;
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Art_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh của " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            else
                            {
                                Answer_string = "Có tranh của " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "yn2r":// node 161 ; o tai vi tri L co tranh thuoc truong phai G không?
                    genre = Genre.GetByKind(KeyWord[0].ToUpper());
                    if (genre == null) Answer_string = ex6;
                    else
                    {
                        try
                        {
                            int gen_id = genre.Gen_ID;
                            string querystring = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + gen_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = "Không có tranh thuộc trường phái " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            else
                            {
                                Answer_string = "Có tranh thuộc trường phái " + KeyWord[0].ToString() + " ở tại " + KeyWord[1] + ".";
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "yn3r":// node 169 ; o tai vi tri L co tranh thuoc bo suu tap C cua tac gia P không?
                    art = Artist.GetByArtistName(KeyWord[1].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        int art_id = art.Art_ID;
                        try
                        {
                            string querystring = "SELECT * FROM Collection WHERE ((Art_Id =" + art_id + ")AND (Name LIKE N'%" + KeyWord[0].ToString() + "%'))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = ex7;
                            else
                            {
                                string list_paint_id = dt.Rows[0]["List_Paint_Id"].ToString();
                                try
                                {                                   
                                    string querystring1 = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[2].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                                    DataTable dt1 = new DataTable();
                                    SqlDataAdapter da1 = new SqlDataAdapter(querystring1, MainWindow.DBConnection);
                                    da1.Fill(dt1);
                                    if (dt1.Rows.Count == 0) Answer_string = "Không có. ";
                                    else
                                    {
                                        bool istrue = false;
                                        int i = 0;
                                        while ((istrue == false) && (i == dt1.Rows.Count))
                                        {
                                            string paint_id = dt1.Rows[i]["Paint_Id"].ToString();
                                            istrue = STRINGCLASS.is_content(list_paint_id, paint_id);
                                            i++;
                                        }
                                        if (istrue == false) Answer_string = "Không có. ";
                                        Answer_string = yes;
                                    }
                                }
                                catch (Exception)
                                {
                                    return null;
                                }
                            }
                        }

                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "yn4r":// node 174; o tai vi tri L co tranh thuoc bo suu tap C  không?

                    try
                    {
                        string querystring = "SELECT * FROM Collection WHERE  Name LIKE N'%" + KeyWord[0].ToString() + "%'";
                        DataTable dt = new DataTable();
                        SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                        da.Fill(dt);
                        if (dt.Rows.Count == 0) Answer_string = ex7;
                        else
                        {
                            string list_paint_id = dt.Rows[0]["List_Paint_Id"].ToString();
                            int art_id = int.Parse(dt.Rows[0]["Art_Id"].ToString());
                            try
                            {
                                string querystring1 = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[1].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                                DataTable dt1 = new DataTable();
                                SqlDataAdapter da1 = new SqlDataAdapter(querystring1, MainWindow.DBConnection);
                                da1.Fill(dt1);
                                if (dt1.Rows.Count == 0) Answer_string = "Không có ";
                                else
                                {
                                    bool istrue = false;
                                    int i = 0;
                                    while ((istrue == false) && (i == dt1.Rows.Count))
                                    {
                                        string paint_id = dt1.Rows[i]["Paint_Id"].ToString();
                                        istrue = STRINGCLASS.is_content(list_paint_id, paint_id);
                                        i++;
                                    }
                                    if (istrue == false) Answer_string = "Không có. ";
                                    Answer_string = yes;
                                }
                            }
                            catch (Exception)
                            {
                                return null;
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                    break;                  
                
                case "yn7.1":// node 207 2 tranh co cung truong phai khong
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int gen_id = paint.Gen_ID;
                        paint = Painting.GetByPaintingName(KeyWord[1].ToUpper());
                        if (paint == null) Answer_string = ex3;
                        else
                        {
                            if (gen_id == paint.Gen_ID) Answer_string = yes;
                            else Answer_string = no;
                        }
                    }
                    break;

                case "yn7.2":// node 207 2 tranh co cung kich thuoc khong
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        float height = paint.Height;
                        float width = paint.Width;
                        paint = Painting.GetByPaintingName(KeyWord[1].ToUpper());
                        if (paint == null) Answer_string = ex3;
                        else
                        {
                            if ((height == paint.Height) && (paint.Width == width)) Answer_string = yes;
                            else Answer_string = no;
                        }
                    }
                    break;

                case "yn7.3":// node 207 2 tranh co cung tac gia khong
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int art_id = paint.Art_ID;
                        paint = Painting.GetByPaintingName(KeyWord[1].ToUpper());
                        if (paint == null) Answer_string = ex3;
                        else
                        {
                            if (art_id == paint.Art_ID) Answer_string = yes;
                            else Answer_string = no;
                        }
                    }
                    break;

                case "yn7.4":// node 207 2 tranh co cung chu so huu khong
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        int own_id = paint.Own_ID;
                        paint = Painting.GetByPaintingName(KeyWord[1].ToUpper());
                        if (paint == null) Answer_string = ex3;
                        else
                        {
                            if (own_id == paint.Own_ID) Answer_string = yes;
                            else Answer_string = no;
                        }
                    }
                    break;

                case "yn7.5":// node 207 2 tranh co cung chat lieu khong
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        string material = paint.Material;
                        paint = Painting.GetByPaintingName(KeyWord[1].ToUpper());
                        if (paint == null) Answer_string = ex3;
                        else
                        {
                            if (material == paint.Material) Answer_string = yes;
                            else Answer_string = no;
                        }
                    }
                    break;

                case "yn8":// node212 tranh P thuoc truong phai G phai khong
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    genre = Genre.GetByKind(KeyWord[1].ToLower());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        if (genre == null) Answer_string = ex6;
                        else
                        {
                            if (genre.Gen_ID == paint.Gen_ID) Answer_string = yes;
                            else Answer_string = no;
                        }
                    }
                    break;

                case "yn9":// node217 tranh p thuoc bo suu tap C dung khong
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        try
                        {
                            string querystring = "SELECT * FROM Collection WHERE Name LIKE N'%" + KeyWord[1].ToUpper() + "%'";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count == 0) Answer_string = ex7;
                            else
                            {
                                string list_paint_id = dt.Rows[0]["List_Paint_Id"].ToString();
                                bool iscontent = STRINGCLASS.is_content(list_paint_id, paint.Paint_ID.ToString());
                                if (iscontent == true) Answer_string = yes;
                                else Answer_string = no;
                            }
                        }
                        catch (Exception)
                        {
                            return null;
                        }
                    }
                    break;

                case "yn10":// node 221, tac gia A la nam / nu phai khong
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        if (sentence_string.Contains("nam"))
                        {
                            if (art.Artist_Gen == true) Answer_string = yes;
                            else Answer_string = no;
                        }
                        else
                        {
                            if (sentence_string.Contains("nữ"))
                            {
                                if (art.Artist_Gen == true) Answer_string = no;
                                else Answer_string = yes;
                            }
                        }
                    }
                    break;

                case "yn11.1":// node 224 A là tac gia cua tranh P dung khong?
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        paint = Painting.GetByPaintingName(KeyWord[1].ToUpper());
                        if (paint == null) Answer_string = ex3;
                        else
                        {
                            if (art.Art_ID == paint.Art_ID) Answer_string = yes;
                            else Answer_string = no;
                        }
                    }
                    break;

                case "yn11.2":// node 224 A là chu so huu cua tranh P dung khong?
                    owner = Owner.GetByOwnerName(KeyWord[0].ToUpper());
                    if (owner == null) Answer_string = ex2;
                    else
                    {
                        paint = Painting.GetByPaintingName(KeyWord[1].ToUpper());
                        if (paint == null) Answer_string = ex3;
                        else
                        {
                            if (owner.Own_ID == paint.Own_ID) Answer_string = yes;
                            else Answer_string = no;
                        }
                    }
                    break;

                case "yn12":// node 249 Tac gia A la nguoi nuoc N dung ko
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        if (art.Art_Nationality == KeyWord[1].ToUpper()) Answer_string = yes;
                        else Answer_string = no;
                    }
                    break;

                case "yn13":// node 282 tranh P ve tren chat lieu M dung ko
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        if (paint.Material == KeyWord[1].ToLower()) Answer_string = yes;
                        else Answer_string = no;
                    }
                    break;

                case "yn16":// node 325  tranh p do hoa si A ve phai khong
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        art = Artist.GetByArtistId(paint.Art_ID);
                        if (art.Art_Name == KeyWord[1].ToUpper()) Answer_string = yes;
                        else
                        {
                            Answer_string = no;
                        }
                    }
                    break;
                #endregion

                #region selection

                case "s1"://node 238 tac gia A la nam hay nu
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        if (art.Artist_Gen == true) Answer_string = "Tác giả là nam.";
                        else Answer_string = "Tác giả là nữ.";
                    }
                    break;

                case "s2"://node 246 tac gia A la ngươi N1 hay N2
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        if (art.Art_Nationality == KeyWord[1].ToUpper()) Answer_string ="Tác giả ấy là người "+ KeyWord[1].ToString();
                        else
                        {
                            if (art.Art_Nationality == KeyWord[2].ToUpper()) Answer_string = "Tác giả ấy là người "+ KeyWord[2].ToString();
                            else Answer_string = no;
                        }
                    }
                    break;
                case "s3"://node 257 tac gia A ve tranh P1 hay P2
                    art = Artist.GetByArtistName(KeyWord[0].ToUpper());
                    if (art == null) Answer_string = ex1;
                    else
                    {
                        paint = Painting.GetByPaintingName(KeyWord[1].ToUpper());
                        if (paint == null)
                        {
                            paint = Painting.GetByPaintingName(KeyWord[2].ToUpper());
                            if (paint == null) Answer_string = no;
                            else
                            {
                                if (art.Art_ID == paint.Art_ID) Answer_string = "Tác giả ấy vẽ tranh " + KeyWord[2].ToString() + ".";
                                else Answer_string = no;
                            }
                        }
                        else
                        {
                            if (art.Art_ID == paint.Art_ID) Answer_string = "Tác giả ấy vẽ tranh " + KeyWord[1].ToString() + ".";
                            else
                            {
                                paint = Painting.GetByPaintingName(KeyWord[2].ToUpper());
                                if (paint == null) Answer_string = no;
                                else
                                {
                                    if (art.Art_ID == paint.Art_ID) Answer_string = "Tác giả ấy vẽ tranh " + KeyWord[2].ToString() + ".";
                                    else Answer_string = no;
                                }
                            }
                        }
                    }
                    break;

                case "s5"://node 285 tranh P ve tren M1 hay M2
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        if (paint.Material == KeyWord[1].ToLower()) Answer_string = KeyWord[1].ToString() + ".";
                        else
                        {
                            if (paint.Material == KeyWord[2].ToLower()) Answer_string = KeyWord[2].ToString() + ".";
                            else Answer_string = no;
                        }
                    }
                    break;

                case "s6":// node 296  tranh p thuoc truong phai G1 hay G2
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        genre = Genre.GetByGenreId(paint.Gen_ID);
                        if (genre.KIND == KeyWord[1].ToLower()) Answer_string = "Tranh ấy thuộc trường phái " + KeyWord[1].ToString() + ".";
                        else
                        {
                            if (genre.KIND == KeyWord[2].ToLower()) Answer_string = "Tranh ấy thuộc trường phái " + KeyWord[2].ToString() + ".";
                            else Answer_string = no;
                        }
                    }
                    break;

                case "s9":// node 328  tranh p do hoa si A1 hay A2 ve
                    paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                    if (paint == null) Answer_string = ex3;
                    else
                    {
                        art = Artist.GetByArtistId(paint.Art_ID);
                        if (art.Art_Name == KeyWord[1].ToUpper()) Answer_string = "Tranh ấy do " + KeyWord[1].ToString() + " vẽ.";
                        else
                        {
                            if (art.Art_Name == KeyWord[2].ToUpper()) Answer_string = "Tranh ấy do " + KeyWord[2].ToString() + " vẽ.";
                            else Answer_string = no;
                        }
                    }
                    break;
                #endregion      
                case "history":
                    VMEDataSet.T_HienVatDataTable hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToUpper());
                    if (hienVatTable.Count == 0) Answer_string = ex5;
                    else
                    {
                        if (hienVatTable.Rows[0]["LichSuHienVat"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["LichSuHienVat"].ToString();
                        else Answer_string = ex5;
                    }
                    break;
                case "usage":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToUpper());
                    if (hienVatTable.Count == 0) Answer_string = ex5;
                    else
                    {
                        if (hienVatTable.Rows[0]["SuDung"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["SuDung"].ToString();
                        else
                            Answer_string = ex5;
                    }
                    break;
                case "time":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToUpper());
                    if (hienVatTable.Count == 0) Answer_string = ex5;
                    else
                    {
                        if (hienVatTable.Rows[0]["ThoiGianSuuTam"].ToString() != "")
                            Answer_string = hienVatTable.Rows[0]["ThoiGianSuuTam"].ToString();
                        else
                            Answer_string = ex5;
                    }
                    break;
                case "size":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToUpper());
                    if (hienVatTable.Count == 0) Answer_string = ex5;
                    else
                    {
                        if (hienVatTable.Rows[0]["Dai"].ToString() != "") Answer_string += "Chiều dài : " + hienVatTable.Rows[0]["Dai"].ToString() + ". ";
                        if (hienVatTable.Rows[0]["Rong"].ToString() != "") Answer_string += "Chiều rộng : " + hienVatTable.Rows[0]["Rong"].ToString() + ". ";
                        if (hienVatTable.Rows[0]["Cao"].ToString() != "") Answer_string += "Chiều cao : " + hienVatTable.Rows[0]["Cao"].ToString() + ". ";
                        if (hienVatTable.Rows[0]["DuongKinh"].ToString() != "") Answer_string += "Đường kính : " + hienVatTable.Rows[0]["DuongKinh"].ToString() + "." ;
                    }
                    break;
                case "material":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToUpper());
                    if (hienVatTable.Rows.Count == 0) Answer_string = ex5;
                    else
                    {
                        if (hienVatTable.Rows[0]["ChatLieuID"].ToString() != "")
                        {
                            VMEDataSet.T_ChatLieuDataTable chatLieuTable = ChatLieu.GetChatLieuById(int.Parse(hienVatTable.Rows[0]["ChatLieuID"].ToString()));
                            Answer_string = "Chất liệu : " + chatLieuTable.Rows[0]["TenChatLieu"];
                        }
                    }
                    break;
                case "tribe":
                    hienVatTable = HienVat.GetHienVatByName(KeyWord[0].ToUpper());
                    if (hienVatTable.Rows.Count == 0) Answer_string = ex5;
                    else
                    {
                        if (hienVatTable.Rows[0]["DanTocCheTacID"].ToString() != "")
                        {
                            VMEDataSet.T_DantocDataTable danTocTable = DanToc.GetDanTocById(int.Parse(hienVatTable.Rows[0]["DanTocCheTacID"].ToString()));
                            Answer_string = "Dân tộc chế tác : " + danTocTable.Rows[0]["TenDanToc"];
                        }
                    }
                    break;
            }

            //sentence_string += " @@ " + Answer_string;
            //return sentence_string;
            if (!Answer_string.EndsWith(".")) Answer_string += ".";
            return Answer_string;
        }        

        /*------------------------------phân tách các loại EAT nhỏ hơn, để tìm câu trả lời phù hợp--------------------*/

        private static void specificEAT(ref string EAT) 
        {
            switch (EAT)
            { 
                case "Add1":
                {
                    if (sentence_string.ToLower().Contains("chủ sở hữu")) EAT = "Add1.2";// dia chi cua chu so huu
                    else EAT = "Add1.1";// dia chi cua tac gia
                    break;
                }
                case "Ask1":
                {

                    if (sentence_string.ToLower().Contains("nội dung")) EAT = "Ask1.1";// noi dung 
                    if (sentence_string.ToLower().Contains("chất liệu")) EAT = "Ask1.2";// chat lieu
                    if (sentence_string.ToLower().Contains("trường phái")) EAT = "Ask1.3";// truong phai
                    if (sentence_string.ToLower().Contains("quốc tịch")) EAT = "Ask1.4";// quoc tich của CSH or Hsi
                    break;
                }
                case "Ask3":
                {
                    if (sentence_string.ToLower().Contains("kích thước")) EAT = "Ask3.1";// kich thuoc
                    else EAT = "Ask3.2";// gia ca
                    break;
                }
                case "Ask4":
                case "yn11":
                {
                    if (sentence_string.ToLower().Contains("chủ sở hữu")) EAT += ".2";// chu so huu
                    else EAT += ".1";// tac gia
                    break;
                }                
                
                case "listsame2":   
                case "listsame1":
                {
                    if (sentence_string.ToLower().Contains("trường phái")) EAT += ".1";
                    if (sentence_string.ToLower().Contains("chủ sở hữu")) EAT += ".2";                
                    if (sentence_string.ToLower().Contains("tác giả")) EAT += ".3";
                    if (sentence_string.ToLower().Contains("chất liệu")) EAT += ".4";
                    break;
                }
                    
                case "listLW1":
                case "listLW2":
                {
                    if (sentence_string.ToLower().Contains("bằng")) EAT += ".3";
                    else
                    {
                        if (sentence_string.ToLower().Contains("nhỏ hơn") || sentence_string.ToLower().Contains("bé hơn")) EAT += ".2";
                        else EAT += ".1";
                    }
                    break;
                }
                case "listLW3":
                {
                    EAT = "listLW1.3";
                    break;
                }
                case "listLW4":
                {
                    EAT = "listLW2.3";
                    break;
                }
                case "listyear2":
                case "listyear5":                
                {
                    if (sentence_string.Contains("trước")) EAT += ".1";
                    if (sentence_string.Contains("sau")) EAT += ".2";
                    if (sentence_string.Contains("trong")) EAT += ".3";
                    break;
                }
                case "listyear6":
                {
                    EAT = "listyear5.3";
                    break;
                }

                case "listprice1":
                case "listprice4":
                {
                    if ((sentence_string.ToLower().Contains("bằng")) || (sentence_string.ToLower().Contains("khoảng"))) EAT += ".3";
                    else
                    {
                        if (sentence_string.ToLower().Contains("nhỏ hơn") || sentence_string.ToLower().Contains("rẻ hơn") || sentence_string.ToLower().Contains("thấp hơn")) EAT += ".2";
                        else EAT += ".1";
                    }
                    break;
                }
                case "info1":
                {
                    if (sentence_string.Contains("chủ sở hữu")) EAT += ".2";
                    else EAT += ".1";
                    break;
                }
                case "yn7":
                {

                    if (sentence_string.ToLower().Contains("trường phái")) EAT += ".1";
                    if (sentence_string.ToLower().Contains("kích thước")) EAT += ".2";
                    if (sentence_string.ToLower().Contains("tác giả")) EAT += ".3";
                    if (sentence_string.ToLower().Contains("chủ sở hữu")) EAT += ".4";
                    if (sentence_string.ToLower().Contains("chất liệu")) EAT += ".5";
                    break;
                }
                case "Ask7":
                {
                    if (sentence_string.ToLower().Contains("sinh")) EAT += ".1";
                    else EAT += ".2";
                    break;
                }
            }
            
        }

        /*------------------------------xu ly EAT = yn3---------------------------------------------------------------*/

        private static void processYn3(string[] KeyWord)   
        {
            art = Artist.GetByArtistName(KeyWord[2].ToUpper());
            if (art == null) Answer_string = ex1;
            else
            {
                int art_id = art.Art_ID;
                try
                {
                    string querystring = "SELECT * FROM Collection WHERE ((Art_Id =" + art_id + ")AND (Name LIKE N'%" + KeyWord[1].ToUpper() + "%'))";
                    DataTable dt = new DataTable();
                    SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                    da.Fill(dt);

                    if (dt.Rows.Count == 0) Answer_string = ex7;
                    else
                    {
                        string list_paint_id = dt.Rows[0]["List_Paint_Id"].ToString();

                        try
                        {
                            string querystring1 = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[0].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                            DataTable dt1 = new DataTable();
                            SqlDataAdapter da1 = new SqlDataAdapter(querystring1, MainWindow.DBConnection);
                            da1.Fill(dt1);
                            if (dt1.Rows.Count == 0) Answer_string = "Không có.";
                            else
                            {
                                bool istrue = false;
                                int i = 0;
                                while ((istrue == false) && (i == dt1.Rows.Count))
                                {
                                    string paint_id = dt1.Rows[i]["Paint_Id"].ToString();
                                    istrue = STRINGCLASS.is_content(list_paint_id, paint_id);
                                    i++;
                                }
                                if (istrue == false) Answer_string = "Không có. ";
                                Answer_string = yes;
                            }
                        }
                        catch (Exception)
                        {
                            Answer_string = null;
                        }
                    }

                }
                catch (Exception)
                {
                    Answer_string = null;
                }
            }            
        }

        /*------------------------------xu ly EAT = yn4----------------------------------------------------------------*/

        private static void processYn4(string[] KeyWord) 
        {
            try
            {
                string querystring = "SELECT * FROM Collection WHERE  Name LIKE N'%" + KeyWord[1].ToString() + "%'";
                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                da.Fill(dt);
                if (dt.Rows.Count == 0) Answer_string = ex7;
                else
                {
                    string list_paint_id = dt.Rows[0]["List_Paint_Id"].ToString();
                    int art_id = int.Parse(dt.Rows[0]["Art_Id"].ToString());
                    try
                    {
                        string querystring1 = "SELECT * FROM Inlocation I, PAINT P WHERE ((P.Gen_Id =" + art_id + ")AND (I.Location LIKE N'%" + KeyWord[0].ToString() + "%') AND (I.Paint_Id= P.Paint_Id))";
                        DataTable dt1 = new DataTable();
                        SqlDataAdapter da1 = new SqlDataAdapter(querystring1, MainWindow.DBConnection);
                        da1.Fill(dt1);
                        if (dt1.Rows.Count == 0) Answer_string = "Không có.";
                        else
                        {
                            bool istrue = false;
                            int i = 0;
                            while ((istrue == false) && (i == dt1.Rows.Count))
                            {
                                string paint_id = dt1.Rows[i]["Paint_Id"].ToString();
                                istrue = STRINGCLASS.is_content(list_paint_id, paint_id);
                                i++;
                            }
                            if (istrue == false) Answer_string = "Không có.";
                            Answer_string = yes;
                        }
                    }
                    catch (Exception)
                    {
                        Answer_string = null;
                    }
                }
            }
            catch (Exception)
            {
                Answer_string = null;
            }
        }

        /*------------------------------xu ly EAT = ListMG-info-of-art------------------------------------------------*/

        private static void processListMGInfoOfArt(string[] KeyWord)
        {
            art = Artist.GetByArtistName(KeyWord[1].ToUpper());
            if (art == null) Answer_string = ex1;
            else
            {
                paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
                if (paint != null)
                {
                    genre = Genre.GetByGenreId(paint.Gen_ID);
                    owner = Owner.GetByOwnerId(paint.Own_ID);

                    Answer_string = "Thông tin: ";
                    Answer_string += "Tên: " + KeyWord[0];
                    Answer_string += ", tác giả: " + KeyWord[1];
                    Answer_string += ", chủ sở hữu: " + owner.Own_Name;
                    Answer_string += ", trường phái: " + genre.KIND;
                    Answer_string += ", chiều dài: " + paint.Height.ToString();
                    Answer_string += ", chiều rộng: " + paint.Width.ToString();
                    Answer_string += ", chất liệu: " + paint.Material;
                    if (paint.Painting_Year != "") Answer_string += ", năm sáng tác: " + paint.Painting_Year;
                    if (paint.Description != "") Answer_string += ", mô tả: " + paint.Description;
                    if (paint.Price != -1) Answer_string += ", giá: " + paint.Price.ToString();
                }
                else
                {
                    genre = Genre.GetByKind(KeyWord[0].ToLower());
                    if (genre != null)
                    {
                        try
                        {
                            string querystring = "SELECT * FROM PAINT  WHERE ((Art_Id =" + art.Art_ID + ") AND (Gen_Id=" + genre.Gen_ID + "))";
                            DataTable dt = new DataTable();
                            SqlDataAdapter da = new SqlDataAdapter(querystring, MainWindow.DBConnection);
                            da.Fill(dt);
                            if (dt.Rows.Count != 0)
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                    else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                                }
                            }
                            else
                            {
                                try
                                {
                                    string querystring1 = "SELECT * FROM PAINT  WHERE ((Art_Id =" + art.Art_ID + ") AND (Material LIKE N'%" + KeyWord[0] + "%'))";
                                    DataTable dt1 = new DataTable();
                                    SqlDataAdapter da1 = new SqlDataAdapter(querystring1, MainWindow.DBConnection);
                                    da1.Fill(dt1);
                                    if (dt1.Rows.Count != 0)
                                    {
                                        for (int i = 0; i < dt1.Rows.Count; i++)
                                        {
                                            if (i != (dt1.Rows.Count - 1)) Answer_string += dt1.Rows[i]["Name"].ToString() + ", ";
                                            else Answer_string += dt1.Rows[i]["Name"].ToString() + ".";
                                        }
                                    }
                                    else
                                    {
                                        Answer_string = "Không có tranh nào.";
                                    }
                                }
                                catch (Exception)
                                {
                                    Answer_string = null;
                                }
                            }
                        }
                        catch (Exception)
                        {
                            Answer_string = null;
                        }

                    }
                }

            }
        }

        /*------------------------------xu ly EAT = ListMG-info-------------------------------------------------------*/

        private static void processListMGInfo(string[] KeyWord)
        {
            paint = Painting.GetByPaintingName(KeyWord[0].ToUpper());
            if (paint != null)
            {
                genre = Genre.GetByGenreId(paint.Gen_ID);
                owner = Owner.GetByOwnerId(paint.Own_ID);
                art = Artist.GetByArtistId(paint.Art_ID);
                Answer_string = "Thông tin: ";
                Answer_string += "Tên: " + KeyWord[0];
                Answer_string += ", tác giả: " + art.Art_Name;
                Answer_string += ", chủ sở hữu: " + owner.Own_Name;
                Answer_string += ", trường phái: " + genre.KIND;
                Answer_string += ", chiều dài: " + paint.Height.ToString();
                Answer_string += ", chiều rộng: " + paint.Width.ToString();
                Answer_string += ", chất liệu: " + paint.Material;
                if (paint.Painting_Year != "") Answer_string += ", năm sáng tác: " + paint.Painting_Year;
                if (paint.Description != "") Answer_string += ", mô tả: " + paint.Description;
                if (paint.Price != -1) Answer_string += ", giá: " + paint.Price.ToString();

            }
            else
            {
                genre = Genre.GetByKind(KeyWord[0].ToLower());
                if (genre != null)
                {

                    QASysDataSet.PAINTDataTable dt = Painting.GetAlldataByGenre(genre.Gen_ID);
                    if (dt != null)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                            else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                        }
                    }
                    else
                    {
                        dt = Painting.GetAllByMaterial(KeyWord[0].ToLower());
                        if (dt != null)
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                                else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                            }
                        }
                        else
                        {
                            Answer_string = "Không có tranh nào.";
                        }
                    }
                }
                else
                {
                    QASysDataSet.PAINTDataTable dt = Painting.GetAllByMaterial(KeyWord[0].ToLower());
                    if (dt != null)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            if (i != (dt.Rows.Count - 1)) Answer_string += dt.Rows[i]["Name"].ToString() + ", ";
                            else Answer_string += dt.Rows[i]["Name"].ToString() + ".";
                        }
                    }
                    else
                    {
                        Answer_string = "Không có tranh nào.";
                    }
                }

            }
        }
    }

    
}
